package router

import (
	"github.com/gin-gonic/gin"
	"google.golang.org/grpc"
)

// Router Router接口
type Router interface {
	Route(r *gin.Engine)
}

// RegisterRouter 注册路由结构体
type RegisterRouter struct {
}

// New 返回一个 *RegisterRouter指针对象
func New() *RegisterRouter {
	return &RegisterRouter{}
}

// Route 接收Router接口类型对象 和 *gin.Engine, 调用Router接口的Route方法
func (*RegisterRouter) Route(ro Router, r *gin.Engine) {
	ro.Route(r)
}

// 接口列表
var routers []Router

// InitRouter 初始化路由
// 哪个*gin.Engine需要注册路由,就把自己传入进来调用方法
func InitRouter(r *gin.Engine) {
	//rg := New() //创建*RegisterRouter对象

	//参1: Router接口实现类        user.RouterUser{}中定义着所有路由
	//rg.Route(&user.RouterUser{}, r) //把user部分路由注册进来
	for _, ro := range routers {
		ro.Route(r)
	}
}

func Register(ro ...Router) {
	routers = append(routers, ro...)
}

type gRPCConfig struct {
	Addr         string
	RegisterFunc func(*grpc.Server)
}
